/*
 * @Date: 2024-10-29 14:49:17
 * @Author: LiSong
 * @LastEditors: LiSong
 * @LastEditTime: 2025-03-31 09:55:30
 * @Description: 自定义通用工具类方法 
 */
import { v4 as uuidv4 } from 'uuid'
import SM4Utils from '@/utils/crypto/sm4-utils.js'

export const VfUtils = {
  /**
   * 获取UUID
   * 
   * @returns {String} 生成的UUID
   */
  getUUID () {
    return uuidv4().replace(/-/g, '').toUpperCase();
  },
	/**
	 * 将字符串转换为 SM4 编码
	 *
	 * @param {string} text - The string to be converted.
	 * @returns {string} - The SM4 encoded string.
	 */
	encryptToSM4 (text) {
		return SM4Utils.encrypt(text)
	},
	/**
	 * 将字符串转换为 Base64 编码
	 *
	 * @param {string} value - The string to be converted.
	 * @returns {string} - The Base64 encoded string.
	 */
	encryptToBase64(value) {
		const bytes = new TextEncoder().encode(value);
		return window.btoa(String.fromCharCode(...bytes));
	},
  /**
	 * 获取浏览器类型
	 * 
	 * @returns {String}
	 */
	getBrowserInfo () {
		var ua = navigator.userAgent.toLocaleLowerCase();
		var browserType=null;
		if (ua.match(/msie/) != null || ua.match(/trident/) != null) {
				browserType = "IE";
				browserVersion = ua.match(/msie ([\d.]+)/) != null ? ua.match(/msie ([\d.]+)/)[1] : ua.match(/rv:([\d.]+)/)[1];
		} else if (ua.match(/firefox/) != null) {
				browserType = "火狐";
		}else if (ua.match(/ubrowser/) != null) {
				browserType = "UC";
		}else if (ua.match(/opera/) != null) {
				browserType = "欧朋";
		} else if (ua.match(/bidubrowser/) != null) {
				browserType = "百度";
		}else if (ua.match(/metasr/) != null) {
				browserType = "搜狗";
		}else if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
				browserType = "QQ";
		}else if (ua.match(/maxthon/) != null) {
				browserType = "遨游";
		}else if (ua.match(/chrome/) != null) {
				var is360 = _mime("type", "application/vnd.chromium.remoting-viewer");
				function _mime(option, value) {
						var mimeTypes = navigator.mimeTypes;
						for (var mt in mimeTypes) {
								if (mimeTypes[mt][option] == value) {
										return true;
								}
						}
						return false;
				}
				if(is360){
						browserType = '360';
				}else{
						browserType = '谷歌';
				}
		}else if (ua.match(/safari/) != null) {
				browserType = "Safari";
		}
		return browserType
	},
	/**
	 * 获取系统信息
	 */
	getOperatingSystem() {
		const platform = navigator.platform.toLowerCase();
		if (platform.includes('win')) return 'Windows';
		if (platform.includes('mac')) return 'MacOS';
		return 'Unknown';
	}
}